﻿Imports System.Data.OleDb

Public Class frmDetalleCompra

    Private Sub frmDetalleCompra_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        actulizaGridDetalleCompras()
        actulizaGridInventario()

        dgvDetalleCompras.RowHeadersVisible = False
        dgvDetalleCompras.ClearSelection()

        dgvDetalleCompras.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
        dgvDetalleCompras.Columns(0).Visible = False
        dgvDetalleCompras.Columns(5).Visible = False

        dgvListaProductos.RowHeadersVisible = False
        dgvListaProductos.ClearSelection()

        dgvListaProductos.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
        dgvListaProductos.Columns(3).Visible = False
        dgvListaProductos.Columns(4).Visible = False
        dgvListaProductos.Columns(6).Visible = False
        dgvListaProductos.Columns(7).Visible = False
        dgvListaProductos.Columns(8).Visible = False
        dgvListaProductos.Columns(9).Visible = False


        dgvListaProductos.ClearSelection()
    End Sub

    Dim coneccion As OleDbConnection
    Private Sub btnCerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCerrar.Click
        frmCompra.Show()
        Me.Close()
    End Sub

    Sub actulizaGridDetalleCompras()
        Dim orden As OleDbDataAdapter
        Dim tabla As DataSet

        coneccion = New OleDbConnection(bd.sConexion)

        Dim idselec = (frmCompra.dgvCompra.Item(0, frmCompra.dgvCompra.CurrentRow.Index).Value).ToString

        orden = New OleDbDataAdapter("select a.idDetalleCompra, a.idCompra, b.NombreProducto ,a.Cantidad, a.PrecioUnitario,a.idCodigoProducto from detalle_compra as a, inventario as b where a.idCodigoProducto = b.idCodigoProducto and IdCompra = " + idselec, coneccion)
        tabla = New DataSet

        orden.Fill(tabla, "detalleCompras")

        dgvDetalleCompras.DataSource = tabla

        dgvDetalleCompras.DataMember = "detalleCompras"

    End Sub

    Sub actulizaGridInventario()
        Dim orden As OleDbDataAdapter
        Dim tabla As DataSet

        coneccion = New OleDbConnection(bd.sConexion)

        orden = New OleDbDataAdapter("select idCodigoProducto,NombreProducto,cantidad as Inventario, PrecioVenta from inventario", coneccion)

        tabla = New DataSet

        orden.Fill(tabla, "detalleCompras")

        dgvListaProductos.DataSource = tabla

        dgvListaProductos.DataMember = "detalleCompras"

    End Sub

    Private Sub dgvDetalleCompra_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvDetalleCompras.CellClick
        TextBox3.Text = dgvDetalleCompras.Item(2, dgvDetalleCompras.CurrentRow.Index).Value
        TextBox1.Text = dgvDetalleCompras.Item(3, dgvDetalleCompras.CurrentRow.Index).Value
        TextBox2.Text = dgvDetalleCompras.Item(4, dgvDetalleCompras.CurrentRow.Index).Value

        btnEliminar.Enabled = True
        btnAgregaProducto.Text = "Nuevo"
        btnActualizar.Enabled = True
        dgvListaProductos.ClearSelection()
    End Sub

    Private Sub dgvListaProductos_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvListaProductos.CellClick
        TextBox3.Text = dgvListaProductos.Item(1, dgvListaProductos.CurrentRow.Index).Value
    End Sub

    Private Sub btnAgregaProducto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAgregaProducto.Click

        If btnAgregaProducto.Text = "Nuevo" Then
            limpiaCampos()
            btnAgregaProducto.Text = "Agregar Producto"

            TextBox3.Focus()
        Else
            'Insert DetalleCompra ************************************************
            Dim command As OleDbCommand
            Dim query1 As String = "insert into detalle_Compra(idCompra, idCodigoProducto, cantidad, precioUnitario) values(" & lblID.Text & ",'" & dgvListaProductos.Item(0, dgvListaProductos.CurrentRow.Index).Value & "'," & TextBox1.Text & "," & TextBox2.Text & ")"
            command = New OleDbCommand(query1, coneccion)
            command.Connection.Open()
            command.ExecuteNonQuery()
            command.Connection.Close()


            'Select Cantidad Inventario ***************************************************
            Dim reader As OleDbDataReader
            Dim cantidadInventario = 0

            MessageBox.Show(dgvListaProductos.Item(0, dgvListaProductos.CurrentRow.Index).Value)

            Dim sql As String = "Select Cantidad from inventario where idCodigoProducto = '" & dgvListaProductos.Item(0, dgvListaProductos.CurrentRow.Index).Value & "'"

            command = New OleDbCommand(sql, cn)
            command.Connection.Open()

            reader = command.ExecuteReader
            Do While reader.Read()
                cantidadInventario = reader.Item("cantidad")
            Loop

            reader.Close()
            command.Connection.Close()

            Dim nuevaCantidad As Integer = cantidadInventario + CDbl(TextBox1.Text)

            'UpdateCantidad Iventario
            Dim query2 As String = "UPDATE inventario SET cantidad = " & nuevaCantidad & " WHERE idCodigoProducto= '" & dgvListaProductos.Item(0, dgvListaProductos.CurrentRow.Index).Value & "'"
            command = New OleDbCommand(query2, coneccion)
            command.Connection.Open()
            command.ExecuteNonQuery()
            command.Connection.Close()

            MsgBox("El registro fue Ingresado")

            actulizaGridDetalleCompras()
            actulizaGridInventario()

            limpiaCampos()
        End If
    End Sub

    Sub limpiaCampos()
        TextBox1.Clear()
        TextBox2.Clear()
        TextBox3.Clear()
        dgvDetalleCompras.ClearSelection()
        dgvListaProductos.ClearSelection()
        btnEliminar.Enabled = False
        btnAgregaProducto.Text = "Agregar Producto"
        btnActualizar.Enabled = False
    End Sub

    Private Sub btnActualizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnActualizar.Click
        Dim command As OleDbCommand

        coneccion = New OleDbConnection(bd.sConexion)

        Dim idProducto

        'If (dgvListaProductos.CurrentRow.Index = 0) Then
        'idProducto = dgvDetalleCompras.Item(5, dgvDetalleCompras.CurrentRow.Index).Value
        'Else
        idProducto = dgvListaProductos.Item(0, dgvListaProductos.CurrentRow.Index).Value
        'End If

        MessageBox.Show(idProducto)

        Dim query1 As String = "UPDATE detalle_Compra SET idCompra=" + lblID.Text + ", idCodigoProducto='" + idProducto.ToString + "', cantidad=" & TextBox1.Text & ", precioUnitario=" & TextBox2.Text & " WHERE idDetalleCompra=" & dgvDetalleCompras.Item(0, dgvDetalleCompras.CurrentRow.Index).Value

        command = New OleDbCommand(query1, coneccion)
        command.Connection.Open()
        command.ExecuteNonQuery()
        command.Connection.Close()

        MsgBox("El registro fue Modificado")

        command.Connection.Close()
        actulizaGridDetalleCompras()
        dgvListaProductos.ClearSelection()
        limpiaCampos()

        btnAgregaProducto.Text = "Agregar Producto"
        btnEliminar.Enabled = False
        btnActualizar.Enabled = False
    End Sub

    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click
        Dim command As OleDbCommand

        coneccion = New OleDbConnection(bd.sConexion)

        Dim query1 As String = "delete from detalle_Compra WHERE idDetalleCompra =" & dgvDetalleCompras.Item(0, dgvDetalleCompras.CurrentRow.Index).Value
        command = New OleDbCommand(query1, coneccion)
        command.Connection.Open()
        command.ExecuteNonQuery()
        command.Connection.Close()

        MsgBox("El registro fue Eliminado")

        command.Connection.Close()

        actulizaGridDetalleCompras()
        dgvListaProductos.ClearSelection()
        limpiaCampos()

        btnAgregaProducto.Text = "Agregar Producto"
        btnActualizar.Enabled = False
    End Sub
End Class